const { spawn } = require('child_process');

console.log('🚀 启动开发环境...');

// 启动后端服务器
console.log('📡 启动后端服务器 (端口 9091)...');
const backend = spawn('node', ['server/app.js'], {
  stdio: 'inherit',
  shell: true,
  cwd: process.cwd(),
  env: { ...process.env, PORT: '9091' }
});

// 等待2秒后启动前端
setTimeout(() => {
  console.log('🎨 启动前端开发服务器 (端口 9090)...');
  
  // 使用 cross-env 设置端口，如果没有则直接设置环境变量
  const frontend = spawn('npm', ['start'], {
    stdio: 'inherit',
    shell: true,
    cwd: process.cwd(),
    env: { 
      ...process.env, 
      PORT: '9090',
      BROWSER: 'none', // 防止自动打开浏览器
      FAST_REFRESH: 'false' // 可能有助于解决启动问题
    }
  });

  frontend.on('error', (error) => {
    console.error('❌ 前端启动失败:', error);
  });

  frontend.on('close', (code) => {
    console.log(`前端进程退出，代码: ${code}`);
    // 如果前端退出，也退出后端
    backend.kill();
    process.exit(code);
  });
}, 2000);

backend.on('error', (error) => {
  console.error('❌ 后端启动失败:', error);
});

backend.on('close', (code) => {
  console.log(`后端进程退出，代码: ${code}`);
  process.exit(code);
});

// 处理进程退出
process.on('SIGINT', () => {
  console.log('\n🛑 正在关闭开发服务器...');
  backend.kill();
  process.exit(0);
});

process.on('SIGTERM', () => {
  console.log('\n🛑 正在关闭开发服务器...');
  backend.kill();
  process.exit(0);
});